一直以為定義function的方法只有
function add(x) {
return x + 2;
}
add(3); // 5
這種方法叫做Function Declaration,
Declared functions不會立刻被執行,
而是先被存起來,
當被調用的時候再執行。
Function Expressions可以將function存在一個變數當中,
這個變數就可以和function一樣使用,
存在這個變數中的function是一個匿名function。
var add = function(x) {
return x + 2;
};
add(3); // 5
和變數一樣,function也有hoisting的特性。
但是僅限於function declaration。
add(2); //4
function add(x) {
return x + 2;
}
add(2); // add is not function
var add = function(x) {
return x + 2;
}
如果console.log(add)
會得到undefined
,跟變數的情況一樣。
Function Expressions 在寫完後可以直接調用,
而不用經過call function這個步驟,
只要在function的後方加上()
既可直接調用。
另外要在function的周圍加上()
來指出是 function expressions。
var sayHi = (function(x) {
console.log('Hi'); // Hi
})();
Parameter、Argument拿去給辜狗翻譯的話,
兩者都是參數的意思。
倆著的差別是:
Parameter是在定義function時參數的名子,
Argument是傳給function的值。
function add(x) { // x是parameter
return x + 2;
}
add(3); // 3 是argument
如果call function時少傳了argument,
這時候這個argument就會被賦予undefined
。
var foo = function(x, y) {
console.log(x + ' and ' + y);
};
foo(1); // "1 and undefined"